package listbyorder.access001_100.test32;

/**
 * @author code_yc
 * @version 1.0
 * @date 2020/5/30 10:36
 */
public class Solution3 {

    // 借用count指针和有效括号字符串的性质
    // 左括号的数据始终大于等于右括号的数目，相等的时候就是有效括号字符串
    public int longestValidParentheses(String s) {
        int count = 0;
        int max = 0;
        for (int i = 0; i < s.length(); i++) {
            count = 0;
            for (int j = i; j < s.length(); j++) {
                if (s.charAt(j) == '(') {
                    count++;
                } else {
                    count--;
                }
                //count < 0 说明右括号多了，此时无论后边是什么，一定是非法字符串了，所以可以提前结束循环
                if (count < 0) {
                    break;

                }
                //当前是合法序列，更新最长长度
                if (count == 0) {
                    if (j - i + 1 > max) {
                        max = j - i + 1;
                    }
                }
            }
        }
        return max;
    }

}
